Within a communication system, transmissions are conducted between a transmitting device and a receiving device over a communication resource, commonly referred to as a communication channel. To date, data transmissions have typically consisted of either a totally reliable data transfer protocol, or a totally unreliable data transfer protocol. Reliable data transmission protocols guarantee a lossless data transfer service, while unreliable data transfer protocols guarantee a “best effort” and are not capable of meeting specific loss requirements. An example of a reliable transmission protocol is the Transmission Control Protocol (TCP), while an example of an unreliable protocol is the User Datagram Protocol (UDP).
In many data transmission scenarios a user can afford some loss of data even though a totally unreliable transmission protocol (e.g., UDP) is unacceptable. That leaves the user with only one choice, namely, a totally reliable transmission protocol. For example, a user may be able to tolerate a maximum 10% loss in data transmission. Because UDP cannot guarantee a maximum loss, the user will be required to utilize a totally reliable transmission protocol (e.g., TCP). Since reliable transmission protocols are generally more expensive than unreliable transmission protocols, the user will be forced to pay a higher price for the totally reliable transmission protocol, even though the user can tolerate data loss. Notwithstanding this fact, the user is forced to occupy more bandwidth than is necessary. Therefore, a need exists for a method and apparatus for data transmission within a communication system that is less than totally reliable, yet offers more reliability than a totally unreliable transmission scheme and the level of reliability can be controlled by the user.